﻿using System.Configuration;
//
namespace PerceptiveMCAPI
{
	internal class MCAPIconfig : ConfigurationElement
	{
		#region ------------------------------------------------------------------ API Control
		[ConfigurationProperty( "SecureAccess", DefaultValue = "False" )]
		internal string SecureAccess
		{
			get { return this["SecureAccess"] as string; }
		}
		[ConfigurationProperty( "Timeout", DefaultValue = "90000" )]
		internal string Timeout
		{
			get { return this["Timeout"] as string; }
		}
		// -- xmlrpc values
		[ConfigurationProperty( "UseStringTag", DefaultValue = "False" )]
		internal string UseStringTag
		{
			get { return this["UseStringTag"] as string; }
		}
		[ConfigurationProperty( "Indentation", DefaultValue = "0" )]
		internal string Indentation
		{
			get { return this["Indentation"] as string; }
		}
		[ConfigurationProperty( "EnableCompression", DefaultValue = "True" )]
		internal string EnableCompression
		{
			get { return this["EnableCompression"] as string; }
		}

		#endregion

		#region ------------------------------------------------------------------ wrapper defaults
		[ConfigurationProperty( "AccessType", DefaultValue = "XmlRpc" )]
		internal string AccessType
		{
			get { return this["AccessType"] as string; }
		}

		[ConfigurationProperty( "OutputType", DefaultValue = "XmlRpc" )]
		internal string OutputType
		{
			get
			{
				return this["OutputType"] as string;
			}
		}

		[ConfigurationProperty( "MethodType", DefaultValue = "POST" )]
		internal string MethodType
		{
			get
			{
				return this["MethodType"] as string;
			}
		}

		[ConfigurationProperty( "EncodeRequest", DefaultValue = "True" )]
		internal string EncodeRequest
		{
			get
			{
				return this["EncodeRequest"] as string;
			}
		}

		[ConfigurationProperty( "Validate", DefaultValue = "False" )]
		internal string Validate
		{
			get
			{
				return this["Validate"] as string;
			}
		}

		[ConfigurationProperty( "CustomErrorMessages", DefaultValue = "False" )]
		internal string CustomErrorMessages
		{
			get
			{
				return this["CustomErrorMessages"] as string;
			}
		}

		[ConfigurationProperty( "DataCenter", DefaultValue = "auto" )]
		internal string DataCenter
		{
			get
			{
				return this["DataCenter"] as string;
			}
		}
		// ------------------------------------------------------------------- general
		[ConfigurationProperty( "apikey", DefaultValue = "" )]
		internal string apikey
		{
			get
			{
				return this["apikey"] as string;
			}
		}
		#endregion

		#region --------------------------------------------------------------- security
		[ConfigurationProperty( "apikeys_expired", DefaultValue = "False" )]
		internal string apikeys_expired
		{
			get { return this["apikeys_expired"] as string; }
		}
		#endregion

		#region ---------------------------------------------------------------- helper
		[ConfigurationProperty( "inlineCss_strip_css", DefaultValue = "False" )]
		internal string inlineCss_strip_css
		{
			get { return this["inlineCss_strip_css"] as string; }
		}
		[ConfigurationProperty( "generateText_type", DefaultValue = "html" )]
		internal string generateText_type
		{
			get { return this["generateText_type"] as string; }
		}
		#endregion

		#region ---------------------------------------------------------------- list
		[ConfigurationProperty( "listUnsubscribe_delete_member", DefaultValue = "False" )]
		internal string listUnsubscribe_delete_member
		{
			get { return this["listUnsubscribe_delete_member"] as string; }
		}

		[ConfigurationProperty( "listUnsubscribe_send_goodbye", DefaultValue = "True" )]
		internal string listUnsubscribe_send_goodbye
		{
			get { return this["listUnsubscribe_send_goodbye"] as string; }
		}

		[ConfigurationProperty( "listUnsubscribe_send_notify", DefaultValue = "False" )]
		internal string listUnsubscribe_send_notify
		{
			get { return this["listUnsubscribe_send_notify"] as string; }
		}

		[ConfigurationProperty( "listSubscribe_email_type", DefaultValue = "html" )]
		internal string listSubscribe_email_type
		{
			get { return this["listSubscribe_email_type"] as string; }
		}

		[ConfigurationProperty( "listSubscribe_double_optin", DefaultValue = "True" )]
		internal string listSubscribe_double_optin
		{
			get { return this["listSubscribe_double_optin"] as string; }
		}

		[ConfigurationProperty( "listSubscribe_update_existing", DefaultValue = "False" )]
		internal string listSubscribe_update_existing
		{
			get { return this["listSubscribe_update_existing"] as string; }
		}

		[ConfigurationProperty( "listSubscribe_replace_interests", DefaultValue = "True" )]
		internal string listSubscribe_replace_interests
		{
			get { return this["listSubscribe_replace_interests"] as string; }
		}

		[ConfigurationProperty( "listSubscribe_send_welcome", DefaultValue = "False" )]
		internal string listSubscribe_send_welcome
		{
			get { return this["listSubscribe_send_welcome"] as string; }
		}

		[ConfigurationProperty( "listMembers_status", DefaultValue = "subscribed" )]
		internal string listMembers_status
		{
			get { return this["listMembers_status"] as string; }
		}
		// ----------------------------------------------------------- interestGrouping
		[ConfigurationProperty( "listInterestGrouping_type", DefaultValue = "checkboxes" )]
		internal string listInterestGrouping_type
		{
			get { return this["listInterestGrouping_type"] as string; }
		}

		// ----------------------------------------------------------- MergeVarAdd/Update
		[ConfigurationProperty( "listMergeVarAdd_field_type", DefaultValue = "text" )]
		internal string listMergeVarAdd_field_type
		{
			get { return this["listMergeVarAdd_field_type"] as string; }
		}
		//
		[ConfigurationProperty( "listMergeVarAdd_req", DefaultValue = "False" )]
		internal string listMergeVarAdd_req
		{
			get { return this["listMergeVarAdd_req"] as string; }
		}
		//
		[ConfigurationProperty( "listMergeVarAdd_public", DefaultValue = "True" )]
		internal string listMergeVarAdd_public
		{
			get { return this["listMergeVarAdd_public"] as string; }
		}
		//
		[ConfigurationProperty( "listMergeVarAdd_show", DefaultValue = "True" )]
		internal string listMergeVarAdd_show
		{
			get { return this["listMergeVarAdd_show"] as string; }
		}
		// ----------------------------------------------------------- Webhook Actions
		[ConfigurationProperty( "listWebhook_actions_subscribe", DefaultValue = "True" )]
		internal string listWebhook_actions_subscribe
		{
			get { return this["listWebhook_actions_subscribe"] as string; }
		}
		//
		[ConfigurationProperty( "listWebhook_actions_unsubscribe", DefaultValue = "True" )]
		internal string listWebhook_actions_unsubscribe
		{
			get { return this["listWebhook_actions_unsubscribe"] as string; }
		}
		//
		[ConfigurationProperty( "listWebhook_actions_profile", DefaultValue = "True" )]
		internal string listWebhook_actions_profile
		{
			get { return this["listWebhook_actions_profile"] as string; }
		}
		//
		[ConfigurationProperty( "listWebhook_actions_cleaned", DefaultValue = "True" )]
		internal string listWebhook_actions_cleaned
		{
			get { return this["listWebhook_actions_cleaned"] as string; }
		}
		//
		[ConfigurationProperty( "listWebhook_actions_upemail", DefaultValue = "True" )]
		internal string listWebhook_actions_upemail
		{
			get { return this["listWebhook_actions_upemail"] as string; }
		}

		// ----------------------------------------------------------- Webhook Sources
		[ConfigurationProperty( "listWebhook_sources_user", DefaultValue = "True" )]
		internal string listWebhook_sources_user
		{
			get { return this["listWebhook_sources_user"] as string; }
		}
		//
		[ConfigurationProperty( "listWebhook_sources_admin", DefaultValue = "True" )]
		internal string listWebhook_sources_admin
		{
			get { return this["listWebhook_sources_admin"] as string; }
		}
		//
		[ConfigurationProperty( "listWebhook_sources_api", DefaultValue = "False" )]
		internal string listWebhook_sources_api
		{
			get { return this["listWebhook_sources_api"] as string; }
		}

		#endregion

		#region -------------------------------------------------------------- campaign related
		[ConfigurationProperty( "campaignContent_for_archive", DefaultValue = "True" )]
		internal string campaignContent_for_archive
		{
			get { return this["campaignContent_for_archive"] as string; }
		}
		[ConfigurationProperty( "campaignSendTest_send_type", DefaultValue = "NotSpecified" )]
		internal string campaignSendTest_send_type
		{
			get { return this["campaignSendTest_send_type"] as string; }
		}
		// v1.3.0 
		[ConfigurationProperty( "campaignMembers_status", DefaultValue = "sent" )]
		internal string campaignMembers_status
		{ get { return this["campaignMembers_status"] as string; } }

		//
		[ConfigurationProperty( "campaign_type", DefaultValue = "regular" )]
		internal string campaign_type
		{ get { return this["campaign_type"] as string; } }
		[ConfigurationProperty( "campaign_tracking_opens", DefaultValue = "True" )]
		internal string campaign_tracking_opens
		{ get { return this["campaign_tracking_opens"] as string; } }
		[ConfigurationProperty( "campaign_tracking_html_clicks", DefaultValue = "True" )]
		internal string campaign_tracking_html_clicks
		{
			get
			{
				return this["campaign_tracking_html_clicks"] as string;
			}
		}
		[ConfigurationProperty( "campaign_tracking_text_clicks", DefaultValue = "False" )]
		internal string campaign_tracking_text_clicks
		{
			get
			{
				return this["campaign_tracking_text_clicks"] as string;
			}
		}
		[ConfigurationProperty( "campaign_authenticate", DefaultValue = "False" )]
		internal string campaign_authenticate
		{
			get
			{
				return this["campaign_authenticate"] as string;
			}
		}
		[ConfigurationProperty( "campaign_inline_css", DefaultValue = "False" )]
		internal string campaign_inline_css
		{
			get
			{
				return this["campaign_inline_css"] as string;
			}
		}
		[ConfigurationProperty( "campaign_generate_text", DefaultValue = "False" )]
		internal string campaign_generate_text
		{
			get { return this["campaign_generate_text"] as string; }
		}
		[ConfigurationProperty( "campaign_auto_tweet", DefaultValue = "False" )]
		internal string campaign_auto_tweet
		{
			get { return this["campaign_auto_tweet"] as string; }
		}
		[ConfigurationProperty( "campaign_timewarp", DefaultValue = "False" )]
		internal string campaign_timewarp
		{
			get { return this["campaign_timewarp"] as string; }
		}
		[ConfigurationProperty( "campaign_ecomm360", DefaultValue = "False" )]
		internal string campaign_ecomm360
		{
			get { return this["campaign_ecomm360"] as string; }
		}
		//
		[ConfigurationProperty( "campaign_auto_footer", DefaultValue = "False" )]
		internal string campaign_auto_footer
		{
			get { return this["campaign_auto_footer"] as string; }
		}

		// campaign Rss options
		[ConfigurationProperty( "campaign_rss_schedule", DefaultValue = "daily" )]
		internal string campaign_rss_schedule
		{
			get { return this["campaign_rss_schedule"] as string; }
		}
		[ConfigurationProperty( "campaign_rss_schedule_hour", DefaultValue = "4" )]
		internal string campaign_rss_schedule_hour
		{
			get { return this["campaign_rss_schedule_hour"] as string; }
		}
		[ConfigurationProperty( "campaign_rss_schedule_weekday", DefaultValue = "1" )]
		internal string campaign_rss_schedule_weekday
		{
			get { return this["campaign_rss_schedule_weekday"] as string; }
		}
		[ConfigurationProperty( "campaign_rss_schedule_monthday", DefaultValue = "1" )]
		internal string campaign_rss_schedule_monthday
		{
			get { return this["campaign_rss_schedule_monthday"] as string; }
		}

		// campaign AB Split
		[ConfigurationProperty( "campaign_AB_pick_winner", DefaultValue = "opens" )]
		internal string campaign_AB_pick_winner
		{
			get { return this["campaign_AB_pick_winner"] as string; }
		}
		[ConfigurationProperty( "campaign_AB_wait_units", DefaultValue = "86400" )]
		internal string campaign_AB_wait_units
		{
			get { return this["campaign_AB_wait_units"] as string; }
		}
		[ConfigurationProperty( "campaign_AB_wait_time", DefaultValue = "1" )]
		internal string campaign_AB_wait_time
		{
			get { return this["campaign_AB_wait_time"] as string; }
		}
		[ConfigurationProperty( "campaign_AB_split_size", DefaultValue = "10" )]
		internal string campaign_AB_split_size
		{
			get { return this["campaign_AB_split_size"] as string; }
		}
		// campaignShareReport
		[ConfigurationProperty( "campaignShareReport_header_type", DefaultValue = "text" )]
		internal string campaignShareReport_header_type
		{
			get { return this["campaignShareReport_header_type"] as string; }
		}
		[ConfigurationProperty( "campaignShareReport_header_data", DefaultValue = "" )]
		internal string campaignShareReport_header_data
		{
			get { return this["campaignShareReport_header_data"] as string; }
		}
		[ConfigurationProperty( "campaignShareReport_secure", DefaultValue = "True" )]
		internal string campaignShareReport_secure
		{
			get { return this["campaignShareReport_secure"] as string; }
		}
		[ConfigurationProperty( "campaignShareReport_css_url", DefaultValue = "" )]
		internal string campaignShareReport_css_url
		{
			get { return this["campaignShareReport_css_url"] as string; }
		}

		#endregion

		#region -------------------------------------------------------------- folder & template related
		[ConfigurationProperty( "folder_type", DefaultValue = "campaign" )]
		internal string folder_type
		{
			get { return this["folder_type"] as string; }
		}

		[ConfigurationProperty( "template_type", DefaultValue = "user" )]
		internal string template_type
		{
			get { return this["template_type"] as string; }
		}
		#endregion

		#region ------------------------------------------------------------- default limits
		// Lists
		[ConfigurationProperty( "limit_listMembers", DefaultValue = "100" )]
		internal string limit_listMembers
		{
			get { return this["limit_listMembers"] as string; }
		}
		[ConfigurationProperty( "limit_lists", DefaultValue = "25" )]
		internal string limit_lists
		{
			get { return this["limit_lists"] as string; }
		}
		[ConfigurationProperty( "limit_listAbuseReports", DefaultValue = "500" )]
		internal string limit_listAbuseReports
		{
			get { return this["limit_listAbuseReports"] as string; }
		}
		// Campaigns & Stats
		[ConfigurationProperty( "limit_campaigns", DefaultValue = "25" )]
		internal string limit_campaigns
		{
			get { return this["limit_campaigns"] as string; }
		}
		//
		[ConfigurationProperty( "limit_campaignAbuseReports", DefaultValue = "500" )]
		internal string limit_campaignAbuseReports
		{
			get { return this["limit_campaignAbuseReports"] as string; }
		}
		[ConfigurationProperty( "limit_campaignBounceMessages", DefaultValue = "25" )]
		internal string limit_campaignBounceMessages
		{
			get { return this["limit_campaignBounceMessages"] as string; }
		}
		[ConfigurationProperty( "limit_campaignEcommOrders", DefaultValue = "100" )]
		internal string limit_campaignEcommOrders
		{
			get { return this["limit_campaignEcommOrders"] as string; }
		}
		[ConfigurationProperty( "limit_campaignHardBounces", DefaultValue = "1000" )]
		internal string limit_campaignHardBounces
		{
			get { return this["limit_campaignHardBounces"] as string; }
		}
		[ConfigurationProperty( "limit_campaignSoftBounces", DefaultValue = "1000" )]
		internal string limit_campaignSoftBounces
		{
			get { return this["limit_campaignSoftBounces"] as string; }
		}
		[ConfigurationProperty( "limit_campaignUnsubscribes", DefaultValue = "1000" )]
		internal string limit_campaignUnsubscribes
		{
			get { return this["limit_campaignUnsubscribes"] as string; }
		}
		[ConfigurationProperty( "limit_campaignMembers", DefaultValue = "1000" )]
		internal string limit_campaignMembers
		{
			get { return this["limit_campaignMembers"] as string; }
		}
		// AIM
		[ConfigurationProperty( "limit_campaignClickDetailAIM", DefaultValue = "1000" )]
		internal string limit_campaignClickDetailAIM
		{
			get { return this["limit_campaignClickDetailAIM"] as string; }
		}
		[ConfigurationProperty( "limit_campaignEmailStatsAIMAll", DefaultValue = "100" )]
		internal string limit_campaignEmailStatsAIMAll
		{
			get { return this["limit_campaignEmailStatsAIMAll"] as string; }
		}
		[ConfigurationProperty( "limit_campaignNotOpenedAIM", DefaultValue = "1000" )]
		internal string limit_campaignNotOpenedAIM
		{
			get { return this["limit_campaignNotOpenedAIM"] as string; }
		}
		[ConfigurationProperty( "limit_campaignOpenedAIM", DefaultValue = "1000" )]
		internal string limit_campaignOpenedAIM
		{
			get { return this["limit_campaignOpenedAIM"] as string; }
		}
		// ---------------------------------- eCommerce
		[ConfigurationProperty( "limit_ecommOrders", DefaultValue = "100" )]
		internal string limit_ecommOrders
		{
			get { return this["limit_ecommOrders"] as string; }
		}

		#endregion
	}
}
